package com.yuexunit.auth.service;

import java.util.List;

import com.yuexunit.account.action.v2.model.Operation;
import com.yuexunit.account.action.v2.model.Role;


/**
 * @author wangjinshui
 */
public interface AuthorizationService {

	/**
	 * @param appUuid
	 *            应用UUID
	 * @param accountId
	 *            帐号ID（可为null）
	 * @return 帐号的角色列表
	 */
	public List<Role> inquireRoleList(String appUuid, Long accountId);

	Role inquireRole(Long roleId);

	/**
	 * 修改帐号所属的角色
	 * 
	 * @param appUuid
	 *            应用UUID
	 * @param accountId
	 *            帐号ID
	 * @param roleIdList
	 *            角色列表
	 */
	public void updateAccountRoles(String appUuid, Long accountId, List<Long> roleIdList);

	/**
	 * @param appUuid
	 *            应用UUID
	 * @param accountId
	 *            帐号ID（可为null）
	 * @return 帐号在应用中的权限列表
	 */
	public List<String> inquireOperationListOfAccount(String appUuid, Long accountId);

	/**
	 * 创建角色
	 * 
	 * @param appUuid
	 *            应用UUID
	 * @param roleName
	 *            角色名称
	 * @return 角色ID
	 */
	public Long createRole(String appUuid, String roleName);

	/**
	 * 修改角色名称
	 * 
	 * @param appUuid
	 *            应用UUID
	 * @param roleId
	 *            角色ID
	 * @param roleName
	 *            角色名称
	 */
	public void updateRole(String appUuid, Long roleId, String roleName);

	/**
	 * 删除角色
	 * 
	 * @param appUuid
	 *            应用UUID
	 * @param roleId
	 *            角色ID
	 */
	public void deleteRole(String appUuid, Long roleId);

	/**
	 * @param appUuid
	 *            应用UUID
	 * @param roleId
	 *            角色ID
	 * @return 角色的权限列表
	 */
	public List<Operation> inquireOperationList(String appUuid, Long roleId);

	/**
	 * 修改角色的权限列表
	 * 
	 * @param appUuid
	 *            应用UUID
	 * @param roleId
	 *            角色ID
	 * @param operationCodeList
	 *            权限代码列表
	 */
	public void updateRoleOperations(String appUuid, Long roleId, List<String> operationCodeList);

}
